pub fn is_transitive(&self) -> bool { self.inner.is_transitive() }
pub fn is_build(&self) -> bool { self.inner.is_build() }
pub fn is_optional(&self) -> bool { self.inner.is_optional() }
+
/// Returns true if the default features of the dependency are requested.
pub fn uses_default_features(&self) -> bool {
self.inner.uses_default_features()
pub fn matches_id(&self, id: &PackageId) -> bool {
self.inner.matches_id(id)
}
+
+ pub fn map_source(self, to_replace: &SourceId, replace_with: &SourceId)
+ -> Dependency {
+ if self.source_id() != to_replace {
+ self
+ } else {
+ Rc::try_unwrap(self.inner).unwrap_or_else(|r| (*r).clone())
+ .set_source_id(replace_with.clone())
+ .into_dependency()
+ }
+ }
}
impl Platform {
use semver::Version;
use rustc_serialize::{Encoder, Encodable};
-use core::{Dependency, PackageId, PackageIdSpec, Summary, WorkspaceConfig};
+use core::{Dependency, PackageId, Summary, SourceId, PackageIdSpec};
+use core::WorkspaceConfig;
use core::package_id::Metadata;
pub enum EitherManifest {
pub fn set_summary(&mut self, summary: Summary) {
self.summary = summary;
}
+
+ pub fn map_source(self, to_replace: &SourceId, replace_with: &SourceId)
+ -> Manifest {
+ Manifest {
+ summary: self.summary.map_source(to_replace, replace_with),
+ ..self
+ }
+ }
}
impl VirtualManifest {
.filter(|&(d, _)| d < 4);
matches.min_by_key(|t| t.0).map(|t| t.1)
}
+
+ pub fn map_source(self, to_replace: &SourceId, replace_with: &SourceId)
+ -> Package {
+ Package {
+ manifest: self.manifest.map_source(to_replace, replace_with),
+ manifest_path: self.manifest_path,
+ }
+ }
}
impl fmt::Display for Package {
}),
}
}
+
+ pub fn with_source_id(&self, source: &SourceId) -> PackageId {
+ PackageId {
+ inner: Arc::new(PackageIdInner {
+ name: self.inner.name.to_string(),
+ version: self.inner.version.clone(),
+ source_id: source.clone(),
+ }),
+ }
+ }
}
impl Metadata {
self.dependencies = deps.into_iter().map(f).collect();
self
}
+
+ pub fn map_source(self, to_replace: &SourceId, replace_with: &SourceId)
+ -> Summary {
+ let me = if self.package_id().source_id() == to_replace {
+ let new_id = self.package_id().with_source_id(replace_with);
+ self.override_id(new_id)
+ } else {
+ self
+ };
+ me.map_dependencies(|dep| {
+ dep.map_source(to_replace, replace_with)
+ })
+ }
}
impl PartialEq for Summary {